﻿using System;
using ttt.kontrakte;

namespace ttt.regelwerk
{
    public class Spielstand_ermitteln : ISpielstand_ermitteln
    {
        public Spielstand_ermitteln()
        {
            var gewinnPrüfen = new Auf_Gewinn_prüfen();
            var spielendePrüfen = new Auf_Spielende_prüfen();

            this.In_Process = gewinnPrüfen.In_Prüfen;
            gewinnPrüfen.Out_Gewinn += _ => this.Out_BeurteilterSpielstand(_);
            gewinnPrüfen.Out_Kein_Gewinn += spielendePrüfen.In_Prüfen;

            spielendePrüfen.Out_Geprüft += _ => this.Out_BeurteilterSpielstand(_);
        }


        public Action<Spielstand> In_Process { get; private set; }


        public event Action<Spielstand> Out_BeurteilterSpielstand;
    }
}